import sys
import os
sys.path.insert(0, os.path.abspath('../'))
sys.path.insert(0, os.path.abspath('../../'))
sys.path.insert(0, os.path.abspath('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/'))
sys.path.insert(0, os.path.abspath('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/ibm/'))
sys.path.insert(0, os.path.abspath('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/ibm/landscape/'))
sys.path.insert(0, os.path.abspath('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/ibm/landscape/simulator/'))
import numpy as np
import qiskit
provider = qiskit.IBMQ.load_account()
from qiskit import Aer
from qiskit.utils import QuantumInstance
from qiskit_optimization.algorithms import MinimumEigenOptimizer
from qiskit.algorithms import QAOA
from shared.QiskitMaxcut import *
from ibm.ibm_parameters import *
from matplotlib import pyplot as plt
%matplotlib inline
from ibm_landscape_processes import *
ibmqfactory.load_account:WARNING:2021-08-29 03:20:02,231: Credentials are already in use. The existing account in the session will be replaced.
%load_ext autoreload
%autoreload 2
# ---- Define graph and MaxCut ----
graph = generate_butterfly_graph(with_weights=False)
opt_max_cut = -4
max_cut = Maxcut(graph, opt_max_cut)
max_cut_qubo = max_cut.to_qubo()
max_cut.draw()
from landscape_helper import *
landscape = load_landscape_data('/home/hm-tlacherm/qlm_notebooks/notebooks_1.2.1/notebooks/master_thesis_qaoa/ibm/landscape/simulator/landscape_simulator_butterfly_no_weights_results.npy')
min_gamma, min_beta, min_exp = describe_landscape(landscape)
Landscape mean: -2.63 Min Exp.Value: -3.93 Min. Gamma: 1.26, Min. Beta: -2.54
from plot_helper import *
# Plot landscape in 3D
plot_landscape_3d(landscape)
# Plot Heatmap
heatmap = plot_heatmap(landscape)
heatmap = display_minimum(heatmap, min_gamma, min_beta, min_exp)
from tqa import calculate_tqa
p = 1
tqa_initial_points = calculate_tqa(graph, p)
TQA: Gamma: [0.45175879], Beta: [0.45175879] (p=1)
from qaoa_helper import *
qnSpsa = QNSPSA(calculate_fidelity(create_qaoa(), max_cut_qubo), maxiter=50)
optimizers = [
('COBYLA',COBYLA(maxiter=50)),
('SPSA', SPSA(maxiter=50)),
('QNSPSA', qnSpsa),
]
for optimizer_tuple in optimizers:
optimizer_name, optimizer = optimizer_tuple
# create qaoa
qaoa = create_qaoa(optimizer = optimizer,
reps=p,
initial_point=tqa_initial_points,
with_callback=True
)
# run qaoa
result, optimal_parameters, optimizer_history = run_qaoa_with_callback(qaoa, max_cut_qubo)
# analyse results
print(f"{optimizer_name} Optimizer")
mean, distribution = max_cut.analyse(result, print_output=True)
max_cut.plot_histogram(distribution, mean)
optimizer_history[2][-1] = mean
print()
# Display Optimizer Results
counts, energy_values, maxcut_values, optimizer_gammas, optimizer_betas = optimizer_history
display_optimizer_path(heatmap, optimizer_gammas, optimizer_betas, maxcut_values, optimizer_name)
# Plot Optimizer History MaxCut Evaluation # Values from landscape -> real values may deviate
plot_optimizer_maxcut_history(counts, maxcut_values, optimizer_name)
# Plot Optimizer History Energy Evaluation -> not MaxCutMean!
plot_optimizer_energy_history(counts, energy_values, optimizer_name)
COBYLA Optimizer optimal function value: -4.0 optimal value: [1. 1. 0. 0. 0.] status: SUCCESS Number of samples (31) is too large to display. Skip. Expectation Value: -3.923500000000001 Highest Exp.Value: 0 with 1.0375 % Lowest Exp.Value: -4 with 97.21300000000001 % Highest Probability: -4 with 97.21300000000001 % Ratio r: 0.9808750000000003 Approiximation ratio: 0.9808750000000003 MSE: 6.366518916666671 RMSE: 2.5231961708647765
SPSA Optimizer optimal function value: -4.0 optimal value: [1. 1. 0. 0. 0.] status: SUCCESS Number of samples (32) is too large to display. Skip. Expectation Value: -3.9247500000000004 Highest Exp.Value: 0 with 0.7875 % Lowest Exp.Value: -4 with 97.02499999999999 % Highest Probability: -4 with 97.02499999999999 % Ratio r: 0.9811875000000001 Approiximation ratio: 0.9811875000000001 MSE: 6.371329229166668 RMSE: 2.5241492089745146
QNSPSA Optimizer optimal function value: -4.0 optimal value: [1. 1. 0. 0. 0.] status: SUCCESS Number of samples (32) is too large to display. Skip. Expectation Value: -3.9272499999999986 Highest Exp.Value: 0 with 0.8500000000000001 % Lowest Exp.Value: -4 with 97.212 % Highest Probability: -4 with 97.212 % Ratio r: 0.9818124999999996 Approiximation ratio: 0.9818124999999996 MSE: 6.380959229166661 RMSE: 2.526056062158293
eval_num = 100
max_p = 10
all_results = {}
from qaoa_helper import *
qaoa_p_means = []
qaoa_p_ratios = []
qaoa_p_approx_ratios = []
for p in range(1,max_p+1):
m, r, ar = start_qaoa_evaluation(max_cut, eval_num=eval_num, reps=p)
qaoa_p_means.append(m)
qaoa_p_ratios.append(r)
qaoa_p_approx_ratios.append(ar)
all_results["QAOA"] = [qaoa_p_means, qaoa_p_ratios, qaoa_p_approx_ratios]
p=1: .................................................................................................... p=2: .................................................................................................... p=3: .................................................................................................... p=4: .................................................................................................... p=5: .................................................................................................... p=6: .................................................................................................... p=7: .................................................................................................... p=8: .................................................................................................... p=9: .................................................................................................... p=10: ....................................................................................................
display_boxplots_results(qaoa_p_means, qaoa_p_ratios, qaoa_p_approx_ratios)
from qaoa_helper import *
tqa_p_means = []
tqa_p_ratios = []
tqa_p_approx_ratios = []
tqa_init_points = []
for p in range(1,max_p+1):
tqa_initial_points = calculate_tqa(graph, p)
m, r, ar = start_qaoa_evaluation(max_cut, eval_num=eval_num, reps=p, init_points=tqa_initial_points)
tqa_p_means.append(m)
tqa_p_ratios.append(r)
tqa_p_approx_ratios.append(ar)
tqa_init_points.append(tqa_initial_points)
all_results["TQA QAOA"] = [tqa_p_means, tqa_p_ratios, tqa_p_approx_ratios, tqa_init_points]
TQA: Gamma: [0.45175879], Beta: [0.45175879] (p=1) p=1: .................................................................................................... TQA: Gamma: [0.26237437 0.78712312], Beta: [0.78712312 0.26237437] (p=2) p=2: .................................................................................................... TQA: Gamma: [0.19173646 0.57520938 0.9586823 ], Beta: [0.9586823 0.57520938 0.19173646] (p=3) p=3: .................................................................................................... TQA: Gamma: [0.125 0.375 0.625 0.875], Beta: [0.875 0.625 0.375 0.125] (p=4) p=4: .................................................................................................... TQA: Gamma: [0.08 0.24 0.4 0.56 0.72], Beta: [0.72 0.56 0.4 0.24 0.08] (p=5) p=5: .................................................................................................... TQA: Gamma: [0.05555556 0.16666667 0.27777778 0.38888889 0.5 0.61111111], Beta: [0.61111111 0.5 0.38888889 0.27777778 0.16666667 0.05555556] (p=6) p=6: .................................................................................................... TQA: Gamma: [0.04081633 0.12244898 0.20408163 0.28571429 0.36734694 0.44897959 0.53061224], Beta: [0.53061224 0.44897959 0.36734694 0.28571429 0.20408163 0.12244898 0.04081633] (p=7) p=7: .................................................................................................... TQA: Gamma: [0.03125 0.09375 0.15625 0.21875 0.28125 0.34375 0.40625 0.46875], Beta: [0.46875 0.40625 0.34375 0.28125 0.21875 0.15625 0.09375 0.03125] (p=8) p=8: .................................................................................................... TQA: Gamma: [0.02469136 0.07407407 0.12345679 0.17283951 0.22222222 0.27160494 0.32098765 0.37037037 0.41975309], Beta: [0.41975309 0.37037037 0.32098765 0.27160494 0.22222222 0.17283951 0.12345679 0.07407407 0.02469136] (p=9) p=9: .................................................................................................... TQA: Gamma: [0.02 0.06 0.1 0.14 0.18 0.22 0.26 0.3 0.34 0.38], Beta: [0.38 0.34 0.3 0.26 0.22 0.18 0.14 0.1 0.06 0.02] (p=10) p=10: ....................................................................................................
display_boxplots_results(tqa_p_means, tqa_p_ratios, tqa_p_approx_ratios, prefix='TQA ')
from warmstart_helper import *
ws_p_means = []
ws_p_ratios = []
ws_p_approx_ratios = []
ws_opt_epsilons = []
for p in range(1,max_p+1):
opt_epsilon = optimize_epsilon(max_cut, reps=p)
m, r, ar = start_ws_qaoa_evaluation(max_cut, eval_num=eval_num, reps=p, epsilon=opt_epsilon)
ws_p_means.append(m)
ws_p_ratios.append(r)
ws_p_approx_ratios.append(ar)
ws_opt_epsilons.append(opt_epsilon)
all_results["WarmStart QAOA"] = [ws_p_means, ws_p_ratios, ws_p_approx_ratios, ws_opt_epsilons]
ɛ=0.0 p=1: ....................................................................................................
ɛ=0.0 p=2: ....................................................................................................
ɛ=0.0 p=3: ....................................................................................................
ɛ=0.0 p=4: ....................................................................................................
ɛ=0.0 p=5: ....................................................................................................
ɛ=0.0 p=6: ....................................................................................................
ɛ=0.0 p=7: ....................................................................................................
ɛ=0.0 p=8: ....................................................................................................
ɛ=0.0 p=9: ....................................................................................................
ɛ=0.0 p=10: ....................................................................................................
display_boxplots_results(ws_p_means, ws_p_ratios, ws_p_approx_ratios, prefix='WarmStart ')
from recursive_qaoa_helper import *
recursive_p_means = []
recursive_p_ratios = []
recursive_p_approx_ratios = []
for p in range(1,max_p+1):
m, r, ar = start_recursive_evaluation(max_cut, eval_num=eval_num, reps=p)
recursive_p_means.append(m)
recursive_p_ratios.append(r)
recursive_p_approx_ratios.append(ar)
all_results["Recursive QAOA"] = [recursive_p_means, recursive_p_ratios, recursive_p_approx_ratios]
p=1: Cannot run evaluation 0 with p=1 .Cannot run evaluation 1 with p=1 .Cannot run evaluation 2 with p=1 .Cannot run evaluation 3 with p=1 .Cannot run evaluation 4 with p=1 .Cannot run evaluation 5 with p=1 .Cannot run evaluation 6 with p=1 .Cannot run evaluation 7 with p=1 .Cannot run evaluation 8 with p=1 .Cannot run evaluation 9 with p=1 .Cannot run evaluation 10 with p=1 .Cannot run evaluation 11 with p=1 .Cannot run evaluation 12 with p=1 .Cannot run evaluation 13 with p=1 .Cannot run evaluation 14 with p=1 .Cannot run evaluation 15 with p=1 .Cannot run evaluation 16 with p=1 .Cannot run evaluation 17 with p=1 .Cannot run evaluation 18 with p=1 .Cannot run evaluation 19 with p=1 .Cannot run evaluation 20 with p=1 .Cannot run evaluation 21 with p=1 .Cannot run evaluation 22 with p=1 .Cannot run evaluation 23 with p=1 .Cannot run evaluation 24 with p=1 ..Cannot run evaluation 26 with p=1 .Cannot run evaluation 27 with p=1 .Cannot run evaluation 28 with p=1 .Cannot run evaluation 29 with p=1 .Cannot run evaluation 30 with p=1 .Cannot run evaluation 31 with p=1 .Cannot run evaluation 32 with p=1 .Cannot run evaluation 33 with p=1 .Cannot run evaluation 34 with p=1 .Cannot run evaluation 35 with p=1 .Cannot run evaluation 36 with p=1 .Cannot run evaluation 37 with p=1 .Cannot run evaluation 38 with p=1 ..Cannot run evaluation 40 with p=1 .Cannot run evaluation 41 with p=1 .Cannot run evaluation 42 with p=1 .Cannot run evaluation 43 with p=1 .Cannot run evaluation 44 with p=1 .Cannot run evaluation 45 with p=1 .Cannot run evaluation 46 with p=1 .Cannot run evaluation 47 with p=1 .Cannot run evaluation 48 with p=1 .Cannot run evaluation 49 with p=1 .Cannot run evaluation 50 with p=1 .Cannot run evaluation 51 with p=1 .Cannot run evaluation 52 with p=1 .Cannot run evaluation 53 with p=1 .Cannot run evaluation 54 with p=1 ..Cannot run evaluation 56 with p=1 .Cannot run evaluation 57 with p=1 ..Cannot run evaluation 59 with p=1 .Cannot run evaluation 60 with p=1 .Cannot run evaluation 61 with p=1 .Cannot run evaluation 62 with p=1 .Cannot run evaluation 63 with p=1 .Cannot run evaluation 64 with p=1 .Cannot run evaluation 65 with p=1 .Cannot run evaluation 66 with p=1 .Cannot run evaluation 67 with p=1 .Cannot run evaluation 68 with p=1 .Cannot run evaluation 69 with p=1 .Cannot run evaluation 70 with p=1 .Cannot run evaluation 71 with p=1 .Cannot run evaluation 72 with p=1 .Cannot run evaluation 73 with p=1 .Cannot run evaluation 74 with p=1 .Cannot run evaluation 75 with p=1 ..Cannot run evaluation 77 with p=1 .Cannot run evaluation 78 with p=1 .Cannot run evaluation 79 with p=1 .Cannot run evaluation 80 with p=1 .Cannot run evaluation 81 with p=1 .Cannot run evaluation 82 with p=1 .Cannot run evaluation 83 with p=1 .Cannot run evaluation 84 with p=1 .Cannot run evaluation 85 with p=1 .Cannot run evaluation 86 with p=1 .Cannot run evaluation 87 with p=1 .Cannot run evaluation 88 with p=1 .Cannot run evaluation 89 with p=1 .Cannot run evaluation 90 with p=1 .Cannot run evaluation 91 with p=1 .Cannot run evaluation 92 with p=1 .Cannot run evaluation 93 with p=1 .Cannot run evaluation 94 with p=1 .Cannot run evaluation 95 with p=1 .Cannot run evaluation 96 with p=1 .Cannot run evaluation 97 with p=1 .Cannot run evaluation 98 with p=1 .Cannot run evaluation 99 with p=1 . p=2: Cannot run evaluation 0 with p=2 .Cannot run evaluation 1 with p=2 ..Cannot run evaluation 3 with p=2 .Cannot run evaluation 4 with p=2 .Cannot run evaluation 5 with p=2 ..Cannot run evaluation 7 with p=2 .Cannot run evaluation 8 with p=2 .Cannot run evaluation 9 with p=2 .Cannot run evaluation 10 with p=2 .Cannot run evaluation 11 with p=2 ...Cannot run evaluation 14 with p=2 ..Cannot run evaluation 16 with p=2 .Cannot run evaluation 17 with p=2 .Cannot run evaluation 18 with p=2 .Cannot run evaluation 19 with p=2 .Cannot run evaluation 20 with p=2 .Cannot run evaluation 21 with p=2 ..Cannot run evaluation 23 with p=2 .Cannot run evaluation 24 with p=2 ..Cannot run evaluation 26 with p=2 ..Cannot run evaluation 28 with p=2 .Cannot run evaluation 29 with p=2 ...Cannot run evaluation 32 with p=2 .Cannot run evaluation 33 with p=2 .Cannot run evaluation 34 with p=2 ..Cannot run evaluation 36 with p=2 .Cannot run evaluation 37 with p=2 ..Cannot run evaluation 39 with p=2 ..Cannot run evaluation 41 with p=2 .Cannot run evaluation 42 with p=2 .Cannot run evaluation 43 with p=2 .Cannot run evaluation 44 with p=2 ..Cannot run evaluation 46 with p=2 .Cannot run evaluation 47 with p=2 ...Cannot run evaluation 50 with p=2 .Cannot run evaluation 51 with p=2 .Cannot run evaluation 52 with p=2 ..Cannot run evaluation 54 with p=2 ..Cannot run evaluation 56 with p=2 .Cannot run evaluation 57 with p=2 ...Cannot run evaluation 60 with p=2 .Cannot run evaluation 61 with p=2 .Cannot run evaluation 62 with p=2 .Cannot run evaluation 63 with p=2 ..Cannot run evaluation 65 with p=2 .Cannot run evaluation 66 with p=2 .Cannot run evaluation 67 with p=2 ..Cannot run evaluation 69 with p=2 .....Cannot run evaluation 74 with p=2 ...Cannot run evaluation 77 with p=2 ..Cannot run evaluation 79 with p=2 .Cannot run evaluation 80 with p=2 ...Cannot run evaluation 83 with p=2 .Cannot run evaluation 84 with p=2 .Cannot run evaluation 85 with p=2 .Cannot run evaluation 86 with p=2 .Cannot run evaluation 87 with p=2 .Cannot run evaluation 88 with p=2 .Cannot run evaluation 89 with p=2 .Cannot run evaluation 90 with p=2 .Cannot run evaluation 91 with p=2 .Cannot run evaluation 92 with p=2 .Cannot run evaluation 93 with p=2 .Cannot run evaluation 94 with p=2 .Cannot run evaluation 95 with p=2 .Cannot run evaluation 96 with p=2 .Cannot run evaluation 97 with p=2 .Cannot run evaluation 98 with p=2 .Cannot run evaluation 99 with p=2 . p=3: .....Cannot run evaluation 5 with p=3 ...Cannot run evaluation 8 with p=3 ..Cannot run evaluation 10 with p=3 .Cannot run evaluation 11 with p=3 .Cannot run evaluation 12 with p=3 ..Cannot run evaluation 14 with p=3 .Cannot run evaluation 15 with p=3 .Cannot run evaluation 16 with p=3 .Cannot run evaluation 17 with p=3 .Cannot run evaluation 18 with p=3 .Cannot run evaluation 19 with p=3 .Cannot run evaluation 20 with p=3 ...Cannot run evaluation 23 with p=3 .Cannot run evaluation 24 with p=3 .Cannot run evaluation 25 with p=3 .Cannot run evaluation 26 with p=3 .Cannot run evaluation 27 with p=3 .Cannot run evaluation 28 with p=3 .Cannot run evaluation 29 with p=3 .Cannot run evaluation 30 with p=3 .Cannot run evaluation 31 with p=3 .Cannot run evaluation 32 with p=3 ....Cannot run evaluation 36 with p=3 ...Cannot run evaluation 39 with p=3 ....Cannot run evaluation 43 with p=3 ..Cannot run evaluation 45 with p=3 .Cannot run evaluation 46 with p=3 ...Cannot run evaluation 49 with p=3 ..Cannot run evaluation 51 with p=3 .Cannot run evaluation 52 with p=3 .Cannot run evaluation 53 with p=3 .Cannot run evaluation 54 with p=3 .Cannot run evaluation 55 with p=3 .Cannot run evaluation 56 with p=3 .Cannot run evaluation 57 with p=3 ..Cannot run evaluation 59 with p=3 ..Cannot run evaluation 61 with p=3 .Cannot run evaluation 62 with p=3 ..Cannot run evaluation 64 with p=3 ...Cannot run evaluation 67 with p=3 ..Cannot run evaluation 69 with p=3 ...Cannot run evaluation 72 with p=3 ..Cannot run evaluation 74 with p=3 .Cannot run evaluation 75 with p=3 .Cannot run evaluation 76 with p=3 .Cannot run evaluation 77 with p=3 .Cannot run evaluation 78 with p=3 .Cannot run evaluation 79 with p=3 .Cannot run evaluation 80 with p=3 .Cannot run evaluation 81 with p=3 ..Cannot run evaluation 83 with p=3 .Cannot run evaluation 84 with p=3 .Cannot run evaluation 85 with p=3 .Cannot run evaluation 86 with p=3 .Cannot run evaluation 87 with p=3 ...Cannot run evaluation 90 with p=3 ..Cannot run evaluation 92 with p=3 .Cannot run evaluation 93 with p=3 .Cannot run evaluation 94 with p=3 .Cannot run evaluation 95 with p=3 .Cannot run evaluation 96 with p=3 .Cannot run evaluation 97 with p=3 .Cannot run evaluation 98 with p=3 .Cannot run evaluation 99 with p=3 . p=4: Cannot run evaluation 0 with p=4 ..Cannot run evaluation 2 with p=4 ..Cannot run evaluation 4 with p=4 .Cannot run evaluation 5 with p=4 .Cannot run evaluation 6 with p=4 ..Cannot run evaluation 8 with p=4 .....Cannot run evaluation 13 with p=4 .Cannot run evaluation 14 with p=4 ........Cannot run evaluation 22 with p=4 .Cannot run evaluation 23 with p=4 .Cannot run evaluation 24 with p=4 .Cannot run evaluation 25 with p=4 ..Cannot run evaluation 27 with p=4 .Cannot run evaluation 28 with p=4 ..Cannot run evaluation 30 with p=4 .Cannot run evaluation 31 with p=4 .Cannot run evaluation 32 with p=4 ......Cannot run evaluation 38 with p=4 .Cannot run evaluation 39 with p=4 ..Cannot run evaluation 41 with p=4 .Cannot run evaluation 42 with p=4 .Cannot run evaluation 43 with p=4 ...Cannot run evaluation 46 with p=4 .Cannot run evaluation 47 with p=4 .Cannot run evaluation 48 with p=4 ..Cannot run evaluation 50 with p=4 .Cannot run evaluation 51 with p=4 ..Cannot run evaluation 53 with p=4 ...Cannot run evaluation 56 with p=4 ...Cannot run evaluation 59 with p=4 ..Cannot run evaluation 61 with p=4 .Cannot run evaluation 62 with p=4 ..Cannot run evaluation 64 with p=4 .Cannot run evaluation 65 with p=4 ....Cannot run evaluation 69 with p=4 .Cannot run evaluation 70 with p=4 .Cannot run evaluation 71 with p=4 .Cannot run evaluation 72 with p=4 ....Cannot run evaluation 76 with p=4 .Cannot run evaluation 77 with p=4 ..Cannot run evaluation 79 with p=4 ....Cannot run evaluation 83 with p=4 ...Cannot run evaluation 86 with p=4 .Cannot run evaluation 87 with p=4 ...Cannot run evaluation 90 with p=4 .Cannot run evaluation 91 with p=4 ..Cannot run evaluation 93 with p=4 .Cannot run evaluation 94 with p=4 .Cannot run evaluation 95 with p=4 .Cannot run evaluation 96 with p=4 ..Cannot run evaluation 98 with p=4 .. p=5: Cannot run evaluation 0 with p=5 ..Cannot run evaluation 2 with p=5 ..Cannot run evaluation 4 with p=5 .Cannot run evaluation 5 with p=5 .....Cannot run evaluation 10 with p=5 .Cannot run evaluation 11 with p=5 .....Cannot run evaluation 16 with p=5 ..Cannot run evaluation 18 with p=5 .Cannot run evaluation 19 with p=5 ..Cannot run evaluation 21 with p=5 .Cannot run evaluation 22 with p=5 ...Cannot run evaluation 25 with p=5 .Cannot run evaluation 26 with p=5 ...Cannot run evaluation 29 with p=5 .Cannot run evaluation 30 with p=5 .Cannot run evaluation 31 with p=5 .Cannot run evaluation 32 with p=5 .Cannot run evaluation 33 with p=5 .Cannot run evaluation 34 with p=5 ..Cannot run evaluation 36 with p=5 .Cannot run evaluation 37 with p=5 .Cannot run evaluation 38 with p=5 .Cannot run evaluation 39 with p=5 ..Cannot run evaluation 41 with p=5 ..Cannot run evaluation 43 with p=5 .Cannot run evaluation 44 with p=5 ...Cannot run evaluation 47 with p=5 ..Cannot run evaluation 49 with p=5 ..Cannot run evaluation 51 with p=5 .Cannot run evaluation 52 with p=5 .Cannot run evaluation 53 with p=5 ..Cannot run evaluation 55 with p=5 .....Cannot run evaluation 60 with p=5 ..Cannot run evaluation 62 with p=5 ..Cannot run evaluation 64 with p=5 .Cannot run evaluation 65 with p=5 .Cannot run evaluation 66 with p=5 ..Cannot run evaluation 68 with p=5 ..Cannot run evaluation 70 with p=5 ...Cannot run evaluation 73 with p=5 ...Cannot run evaluation 76 with p=5 ...Cannot run evaluation 79 with p=5 ...........Cannot run evaluation 90 with p=5 .Cannot run evaluation 91 with p=5 ..Cannot run evaluation 93 with p=5 ...Cannot run evaluation 96 with p=5 .Cannot run evaluation 97 with p=5 .Cannot run evaluation 98 with p=5 .. p=6: Cannot run evaluation 0 with p=6 .....Cannot run evaluation 5 with p=6 ...Cannot run evaluation 8 with p=6 .........Cannot run evaluation 17 with p=6 .Cannot run evaluation 18 with p=6 .........Cannot run evaluation 27 with p=6 .Cannot run evaluation 28 with p=6 .Cannot run evaluation 29 with p=6 ..Cannot run evaluation 31 with p=6 ..Cannot run evaluation 33 with p=6 ...Cannot run evaluation 36 with p=6 ..Cannot run evaluation 38 with p=6 .Cannot run evaluation 39 with p=6 ..Cannot run evaluation 41 with p=6 .Cannot run evaluation 42 with p=6 ........Cannot run evaluation 50 with p=6 .Cannot run evaluation 51 with p=6 ..Cannot run evaluation 53 with p=6 ..Cannot run evaluation 55 with p=6 .Cannot run evaluation 56 with p=6 .Cannot run evaluation 57 with p=6 ..Cannot run evaluation 59 with p=6 .Cannot run evaluation 60 with p=6 ..Cannot run evaluation 62 with p=6 .Cannot run evaluation 63 with p=6 ...Cannot run evaluation 66 with p=6 .Cannot run evaluation 67 with p=6 ...Cannot run evaluation 70 with p=6 ..Cannot run evaluation 72 with p=6 .Cannot run evaluation 73 with p=6 .Cannot run evaluation 74 with p=6 ........Cannot run evaluation 82 with p=6 .Cannot run evaluation 83 with p=6 ..Cannot run evaluation 85 with p=6 .Cannot run evaluation 86 with p=6 .Cannot run evaluation 87 with p=6 .Cannot run evaluation 88 with p=6 .Cannot run evaluation 89 with p=6 .Cannot run evaluation 90 with p=6 ....Cannot run evaluation 94 with p=6 ...Cannot run evaluation 97 with p=6 ..Cannot run evaluation 99 with p=6 . p=7: .Cannot run evaluation 1 with p=7 ..Cannot run evaluation 3 with p=7 ..Cannot run evaluation 5 with p=7 ..Cannot run evaluation 7 with p=7 .....Cannot run evaluation 12 with p=7 ...Cannot run evaluation 15 with p=7 .Cannot run evaluation 16 with p=7 .....Cannot run evaluation 21 with p=7 .Cannot run evaluation 22 with p=7 .Cannot run evaluation 23 with p=7 .Cannot run evaluation 24 with p=7 ..Cannot run evaluation 26 with p=7 .Cannot run evaluation 27 with p=7 .Cannot run evaluation 28 with p=7 .Cannot run evaluation 29 with p=7 .....Cannot run evaluation 34 with p=7 .....Cannot run evaluation 39 with p=7 ..Cannot run evaluation 41 with p=7 ......Cannot run evaluation 47 with p=7 ....Cannot run evaluation 51 with p=7 .....Cannot run evaluation 56 with p=7 ......Cannot run evaluation 62 with p=7 .Cannot run evaluation 63 with p=7 ....Cannot run evaluation 67 with p=7 .Cannot run evaluation 68 with p=7 ..Cannot run evaluation 70 with p=7 ..Cannot run evaluation 72 with p=7 ...Cannot run evaluation 75 with p=7 .Cannot run evaluation 76 with p=7 ..Cannot run evaluation 78 with p=7 ..Cannot run evaluation 80 with p=7 .Cannot run evaluation 81 with p=7 .Cannot run evaluation 82 with p=7 .....Cannot run evaluation 87 with p=7 ..Cannot run evaluation 89 with p=7 .Cannot run evaluation 90 with p=7 ...Cannot run evaluation 93 with p=7 .....Cannot run evaluation 98 with p=7 .Cannot run evaluation 99 with p=7 . p=8: .Cannot run evaluation 1 with p=8 ...Cannot run evaluation 4 with p=8 ....Cannot run evaluation 8 with p=8 ..Cannot run evaluation 10 with p=8 ..Cannot run evaluation 12 with p=8 ....Cannot run evaluation 16 with p=8 ...Cannot run evaluation 19 with p=8 ...Cannot run evaluation 22 with p=8 .Cannot run evaluation 23 with p=8 ..Cannot run evaluation 25 with p=8 ..Cannot run evaluation 27 with p=8 ......Cannot run evaluation 33 with p=8 ......Cannot run evaluation 39 with p=8 .....Cannot run evaluation 44 with p=8 .....Cannot run evaluation 49 with p=8 ....Cannot run evaluation 53 with p=8 ...Cannot run evaluation 56 with p=8 .Cannot run evaluation 57 with p=8 ..Cannot run evaluation 59 with p=8 .Cannot run evaluation 60 with p=8 .....Cannot run evaluation 65 with p=8 ....Cannot run evaluation 69 with p=8 .Cannot run evaluation 70 with p=8 ..Cannot run evaluation 72 with p=8 .Cannot run evaluation 73 with p=8 ...Cannot run evaluation 76 with p=8 ....Cannot run evaluation 80 with p=8 ...Cannot run evaluation 83 with p=8 ...Cannot run evaluation 86 with p=8 ..Cannot run evaluation 88 with p=8 ....Cannot run evaluation 92 with p=8 .Cannot run evaluation 93 with p=8 ...Cannot run evaluation 96 with p=8 .Cannot run evaluation 97 with p=8 ... p=9: .Cannot run evaluation 1 with p=9 ....Cannot run evaluation 5 with p=9 ..Cannot run evaluation 7 with p=9 .....Cannot run evaluation 12 with p=9 .Cannot run evaluation 13 with p=9 ......Cannot run evaluation 19 with p=9 .Cannot run evaluation 20 with p=9 ..Cannot run evaluation 22 with p=9 ..Cannot run evaluation 24 with p=9 ...........Cannot run evaluation 35 with p=9 .Cannot run evaluation 36 with p=9 ..Cannot run evaluation 38 with p=9 .Cannot run evaluation 39 with p=9 ....Cannot run evaluation 43 with p=9 ..........Cannot run evaluation 53 with p=9 ........Cannot run evaluation 61 with p=9 ..Cannot run evaluation 63 with p=9 .....Cannot run evaluation 68 with p=9 ......Cannot run evaluation 74 with p=9 ..Cannot run evaluation 76 with p=9 ......Cannot run evaluation 82 with p=9 ..Cannot run evaluation 84 with p=9 ...Cannot run evaluation 87 with p=9 .Cannot run evaluation 88 with p=9 .Cannot run evaluation 89 with p=9 ..Cannot run evaluation 91 with p=9 .Cannot run evaluation 92 with p=9 .Cannot run evaluation 93 with p=9 ....... p=10: .Cannot run evaluation 1 with p=10 .Cannot run evaluation 2 with p=10 ...Cannot run evaluation 5 with p=10 .Cannot run evaluation 6 with p=10 ...Cannot run evaluation 9 with p=10 ..Cannot run evaluation 11 with p=10 ..Cannot run evaluation 13 with p=10 ...Cannot run evaluation 16 with p=10 .....Cannot run evaluation 21 with p=10 .Cannot run evaluation 22 with p=10 ..Cannot run evaluation 24 with p=10 ......Cannot run evaluation 30 with p=10 .......Cannot run evaluation 37 with p=10 .......Cannot run evaluation 44 with p=10 ...Cannot run evaluation 47 with p=10 .................Cannot run evaluation 64 with p=10 ...........Cannot run evaluation 75 with p=10 ...Cannot run evaluation 78 with p=10 .........Cannot run evaluation 87 with p=10 .Cannot run evaluation 88 with p=10 .......Cannot run evaluation 95 with p=10 .....
display_boxplots_results(recursive_p_means, recursive_p_ratios, recursive_p_approx_ratios, prefix='Recursive ')
from recursive_ws_helper import *
ws_recursive_p_means = []
ws_recursive_p_ratios = []
ws_recursive_p_approx_ratios = []
for p in range(1,max_p+1):
opt_epsilon = ws_opt_epsilons[p-1]
m, r, ar = start_recursive_ws_qaoa_evaluation(max_cut, eval_num=eval_num, reps=p, epsilon=opt_epsilon)
ws_recursive_p_means.append(m)
ws_recursive_p_ratios.append(r)
ws_recursive_p_approx_ratios.append(ar)
all_results["Recursive WarmStrart QAOA"] = [ws_recursive_p_means, ws_recursive_p_ratios, ws_recursive_p_approx_ratios, ws_opt_epsilons]
p=1: .................................................................................................... p=2: .................................................................................................... p=3: .................................................................................................... p=4: .................................................................................................... p=5: .................................................................................................... p=6: .................................................................................................... p=7: .................................................................................................... p=8: .................................................................................................... p=9: .................................................................................................... p=10: ....................................................................................................
display_boxplots_results(ws_recursive_p_means, ws_recursive_p_ratios, ws_recursive_p_approx_ratios, prefix='Recursive WarmStart ')
# Save results
with open(f'comparison_simulator_{graph.name}_results.npy', 'wb') as f:
np.save(f, all_results)
from results_helper import *
means_df, ratio_df, approx_ratios_df = generate_dataframes(all_results)
means_df
| QAOA | TQA QAOA | WarmStart QAOA | Recursive QAOA | Recursive WarmStrart QAOA | |
|---|---|---|---|---|---|
| p | |||||
| 1 | -3.91 | -3.92 | -4.0 | -4.0 | -4.0 |
| 2 | -3.90 | -3.93 | -4.0 | -4.0 | -4.0 |
| 3 | -3.87 | -3.81 | -4.0 | -4.0 | -4.0 |
| 4 | -3.93 | -3.77 | -4.0 | -4.0 | -4.0 |
| 5 | -3.92 | -3.93 | -4.0 | -4.0 | -4.0 |
| 6 | -3.92 | -3.95 | -4.0 | -4.0 | -4.0 |
| 7 | -3.90 | -3.93 | -4.0 | -4.0 | -4.0 |
| 8 | -3.90 | -3.94 | -4.0 | -4.0 | -4.0 |
| 9 | -3.86 | -3.95 | -4.0 | -4.0 | -4.0 |
| 10 | -3.85 | -3.90 | -4.0 | -4.0 | -4.0 |
ratio_df
| QAOA | TQA QAOA | WarmStart QAOA | Recursive QAOA | Recursive WarmStrart QAOA | |
|---|---|---|---|---|---|
| p | |||||
| 1 | 0.98 | 0.98 | 0.0 | 0.0 | 0.0 |
| 2 | 0.98 | 0.98 | 0.0 | 0.0 | 0.0 |
| 3 | 0.97 | 0.95 | 0.0 | 0.0 | 0.0 |
| 4 | 0.98 | 0.94 | 0.0 | 0.0 | 0.0 |
| 5 | 0.98 | 0.98 | 0.0 | 0.0 | 0.0 |
| 6 | 0.98 | 0.99 | 0.0 | 0.0 | 0.0 |
| 7 | 0.97 | 0.98 | 0.0 | 0.0 | 0.0 |
| 8 | 0.97 | 0.98 | 0.0 | 0.0 | 0.0 |
| 9 | 0.96 | 0.99 | 0.0 | 0.0 | 0.0 |
| 10 | 0.96 | 0.97 | 0.0 | 0.0 | 0.0 |
approx_ratios_df
| QAOA | TQA QAOA | WarmStart QAOA | Recursive QAOA | Recursive WarmStrart QAOA | |
|---|---|---|---|---|---|
| p | |||||
| 1 | 0.98 | 0.98 | 1.0 | 1.0 | 1.0 |
| 2 | 0.98 | 0.98 | 1.0 | 1.0 | 1.0 |
| 3 | 0.97 | 0.95 | 1.0 | 1.0 | 1.0 |
| 4 | 0.98 | 0.94 | 1.0 | 1.0 | 1.0 |
| 5 | 0.98 | 0.98 | 1.0 | 1.0 | 1.0 |
| 6 | 0.98 | 0.99 | 1.0 | 1.0 | 1.0 |
| 7 | 0.97 | 0.98 | 1.0 | 1.0 | 1.0 |
| 8 | 0.97 | 0.98 | 1.0 | 1.0 | 1.0 |
| 9 | 0.96 | 0.99 | 1.0 | 1.0 | 1.0 |
| 10 | 0.96 | 0.97 | 1.0 | 1.0 | 1.0 |